The ability to backup data and restore lost data is an important function of modern computer systems. However, the implementation of backup and restore functions is complex. First, the backup function has to take into account that the data being backed up may be in a state where it is currently changing. For example, at the time of backing up the data, an application creating and altering the data may be running. Thus, the data that is backed up and stored may be inconsistent with the data as seen by the user using the application. Accordingly, when a restore of the system is requested, the restored data may not be consistent with the expected state of the data (e.g., the data as seen by the user using the application).
In order to minimize the degree of inconsistency in the data being backed up, one solution would require that that the applications using the data be offline (e.g., turning off the applications that may access or modify the data) at the time of backup. However, with data sets becoming larger, taking the applications offline to perform the data backup all at one time is impractical in part due to expectations of continuous application availability and uptime.
In modern computer systems, a file system stores and organizes computer files to enable a program to efficiently locate and access requested files. File systems can utilize a storage device such as a hard disk drive to provide local access to data or to utilize a network to provide access to data stored on a remote file server over the network. A file system can also be characterized as a set of abstract data types that are implemented for the storage, hierarchical organization, manipulation, navigation, access, and retrieval of data. The file system software is responsible for organizing files and directories.
Many companies and individuals with large amounts of stored data employ a file system as a data storage system. These data storage systems can be located local to the data to be backed up or at a remote site. The data storage systems can be managed by the entity controlling the data storage devices or a data storage service company. Data can be added to the storage system at any frequency and at any amount.
Data storage systems may offer storage for backup and disaster recovery. Transfer to remote storage may require the transfer of data over a network. A local client data backup application prepares and sends data from the local file system to a backup system. The backup system stores the data received from the local client application to be utilized in the event of a corruption or failure at the computing device executing the local client data backup application.
Data storage systems may enable a user to select all databases, a segment of the databases or a single database for storage or backup. Each database may include a hierarchy of objects such as site collections, sites, documents, lists, libraries, and folders. While the backup solutions allow for a restore of the selected databases in the event of a catastrophic failure of the user's device or the user's network, the granular recovery of an item in the database such as a specific site is not supported by current backup solutions.